package cl.zeke.pizzastore.vista.managedbeans;

import cl.zeke.pizzastore.negocio.entities.Cliente;
import cl.zeke.pizzastore.negocio.entities.Perfil;
import cl.zeke.pizzastore.vista.security.Identidad;
import java.io.Serializable;
import org.springframework.context.annotation.Scope;
import org.springframework.context.annotation.ScopedProxyMode;
import org.springframework.stereotype.Component;

@Component("identidad")
@Scope(value = "session", proxyMode = ScopedProxyMode.INTERFACES)
public class IdentidadBean implements Identidad, Serializable {

    private Cliente cliente;

    @Override
    public boolean isLoggedIn() {
        return cliente != null;
    }

    @Override
    public boolean tieneRol(String rol) {
        if (cliente == null) {
            return false;
        }
        for (Perfil p : cliente.getIdUsuario().getPerfilList()) {
            if (p.getNombre().equals(rol)) {
                return true;
            }
        }
        return false;
    }

    @Override
    public void iniciar(Cliente cliente) {
        this.cliente = cliente;
    }

    @Override
    public String getEmail() {
        if (cliente == null) {
            return null;
        }
        return cliente.getIdUsuario().getEmail();
    }

    @Override
    public Long getIdUsuario() {
        if (cliente == null) {
            return null;
        }
        return cliente.getIdUsuario().getIdUsuario();
    }

    @Override
    public Long getIdCliente() {
        if (cliente == null) {
            return null;
        }
        return cliente.getIdCliente();
    }

    @Override
    public Integer getRUNCliente() {
        if (cliente == null) {
            return null;
        }
        return cliente.getRun();
    }
}
